packages feed

swarm-0.4: data/scenarios/Challenges/Sliding Puzzles/3x3.yaml

version: 1
name: 3x3 Sliding Puzzle
author: Karl Ostmo
description: |
  Place the 8 tiles in order
creative: false
seed: 0
attrs:
  - name: oddtile
    fg: "#D2B48C"
    bg: "#400000"
  - name: eventile
    fg: "#000000"
    bg: "#B0B0B0"
objectives:
  - teaser: Solve puzzle
    goal:
      - |
        Arrange the tiles in increasing (row-major) order.
      - |
        To slide a tile into the empty space, position yourself
        behind it and `push`.
      - |
        Or, if you prefer, `drill` a tile to cause it to slide
        into the adjacent empty space. However, you must not drill a tile that
        has nowhere to slide. Also, drilling consumes "ink", which will be replenished
        after the sliding operation is complete, so avoid drilling too fast in
        succession.
    condition: |
      j <- robotnamed "setup";
      as j {run "scenarios/Challenges/Sliding Puzzles/_sliding-puzzle/validate-board.sw"};
robots:
  - name: base
    dir: [1, 0]
    devices:
      - ADT calculator
      - branch predictor
      - comparator
      - compass
      - counter
      - decoder ring
      - dictionary
      - dozer blade
      - drill
      - gradiator
      - GPS receiver
      - hearing aid
      - hourglass
      - keyboard
      - lambda
      - locator
      - logger
      - mirror
      - scanner
      - string
      - strange loop
      - treads
    inventory:
      - [1, ink]
      - [1, a-tile-ordinal]
      - [2, b-tile-ordinal]
      - [3, c-tile-ordinal]
      - [4, d-tile-ordinal]
      - [5, e-tile-ordinal]
      - [6, f-tile-ordinal]
      - [7, g-tile-ordinal]
      - [8, h-tile-ordinal]
      - [9, i-tile-ordinal]
      - [10, j-tile-ordinal]
      - [11, k-tile-ordinal]
      - [12, l-tile-ordinal]
      - [13, m-tile-ordinal]
      - [14, n-tile-ordinal]
      - [15, o-tile-ordinal]
      - [16, p-tile-ordinal]
      - [17, q-tile-ordinal]
      - [18, r-tile-ordinal]
      - [19, s-tile-ordinal]
      - [20, t-tile-ordinal]
      - [21, u-tile-ordinal]
      - [22, v-tile-ordinal]
      - [23, w-tile-ordinal]
      - [24, x-tile-ordinal]
      - [25, y-tile-ordinal]
  - name: maintainer
    system: true
    dir: [1, 0]
    display:
      invisible: true
      attr: 'gold'
    inventory:
      - [1, a-tile-ordinal]
      - [2, b-tile-ordinal]
      - [3, c-tile-ordinal]
      - [4, d-tile-ordinal]
      - [5, e-tile-ordinal]
      - [6, f-tile-ordinal]
      - [7, g-tile-ordinal]
      - [8, h-tile-ordinal]
      - [9, i-tile-ordinal]
      - [10, j-tile-ordinal]
      - [11, k-tile-ordinal]
      - [12, l-tile-ordinal]
      - [13, m-tile-ordinal]
      - [14, n-tile-ordinal]
      - [15, o-tile-ordinal]
      - [16, p-tile-ordinal]
      - [17, q-tile-ordinal]
      - [18, r-tile-ordinal]
      - [19, s-tile-ordinal]
      - [20, t-tile-ordinal]
      - [21, u-tile-ordinal]
      - [22, v-tile-ordinal]
      - [23, w-tile-ordinal]
      - [24, x-tile-ordinal]
      - [25, y-tile-ordinal]
    program: |
      run "scenarios/Challenges/Sliding Puzzles/_sliding-puzzle/maintainer.sw";
  - name: setup
    system: true
    dir: [1, 0]
    display:
      invisible: true
      attr: 'iron'
    inventory:
      - [1, a-tile-ordinal]
      - [2, b-tile-ordinal]
      - [3, c-tile-ordinal]
      - [4, d-tile-ordinal]
      - [5, e-tile-ordinal]
      - [6, f-tile-ordinal]
      - [7, g-tile-ordinal]
      - [8, h-tile-ordinal]
      - [9, i-tile-ordinal]
      - [10, j-tile-ordinal]
      - [11, k-tile-ordinal]
      - [12, l-tile-ordinal]
      - [13, m-tile-ordinal]
      - [14, n-tile-ordinal]
      - [15, o-tile-ordinal]
      - [16, p-tile-ordinal]
      - [17, q-tile-ordinal]
      - [18, r-tile-ordinal]
      - [19, s-tile-ordinal]
      - [20, t-tile-ordinal]
      - [21, u-tile-ordinal]
      - [22, v-tile-ordinal]
      - [23, w-tile-ordinal]
      - [24, x-tile-ordinal]
      - [25, y-tile-ordinal]
    program: |
      run "scenarios/Challenges/Sliding Puzzles/_sliding-puzzle/setup.sw";
solution: |
   run "scenarios/Challenges/Sliding Puzzles/_sliding-puzzle/solution.sw"
entities:
  - name: gradiator
    display:
      char: 'G'
    description:
      - Generates a magnetic field gradient that allows the use of `resonate`
    properties: [known]
    capabilities: [detectcount]
  - name: locator
    display:
      char: '{'
    description:
      - Enables the `detect` command
    properties: [known]
    capabilities: [detectloc]
  - name: border
    display:
      char: '▒'
    description:
      - Immovable playfield border
    properties: [known]
  - name: ink
    display:
      char: 'i'
    description:
      - Marking fluid to designate the tile to slide
    properties: [known]
  - name: dozer blade
    display:
      attr: silver
      char: '/'
    description:
    - Facilitates pushing
    properties: [known, portable]
    capabilities: [push]
  - name: sliding-tile
    display:
      char: '*'
    description:
      - Tile that is being moved
    properties: [known]
  - name: a-tile
    display:
      char: 'a'
      attr: oddtile
    description:
      - One
    properties: [known, portable]
  - name: b-tile
    display:
      char: 'b'
      attr: eventile
    description:
      - Two
    properties: [known, portable]
  - name: c-tile
    display:
      char: 'c'
      attr: oddtile
    description:
      - Three
    properties: [known, portable]
  - name: d-tile
    display:
      char: 'd'
      attr: eventile
    description:
      - Four
    properties: [known, portable]
  - name: e-tile
    display:
      char: 'e'
      attr: oddtile
    description:
      - Five
    properties: [known, portable]
  - name: f-tile
    display:
      char: 'f'
      attr: eventile
    description:
      - Six
    properties: [known, portable]
  - name: g-tile
    display:
      char: 'g'
      attr: oddtile
    description:
      - Seven
    properties: [known, portable]
  - name: h-tile
    display:
      char: 'h'
      attr: eventile
    description:
      - Eight
    properties: [known, portable]
  - name: i-tile
    display:
      char: 'i'
      attr: oddtile
    description:
      - Nine
    properties: [known, portable]
  - name: j-tile
    display:
      char: 'j'
      attr: eventile
    description:
      - Ten
    properties: [known, portable]
  - name: k-tile
    display:
      char: 'k'
      attr: oddtile
    description:
      - Eleven
    properties: [known, portable]
  - name: l-tile
    display:
      char: 'l'
      attr: eventile
    description:
      - Twelve
    properties: [known, portable]
  - name: m-tile
    display:
      char: 'm'
      attr: oddtile
    description:
      - Thirteen
    properties: [known, portable]
  - name: n-tile
    display:
      char: 'n'
      attr: eventile
    description:
      - Fourteen
    properties: [known, portable]
  - name: o-tile
    display:
      char: 'o'
      attr: oddtile
    description:
      - Fifteen
    properties: [known, portable]
  - name: p-tile
    display:
      char: 'p'
      attr: eventile
    description:
      - Sixteen
    properties: [known, portable]
  - name: q-tile
    display:
      char: 'q'
      attr: oddtile
    description:
      - Seventeen
    properties: [known, portable]
  - name: r-tile
    display:
      char: 'r'
      attr: eventile
    description:
      - Eighteen
    properties: [known, portable]
  - name: s-tile
    display:
      char: 's'
      attr: oddtile
    description:
      - Nineteen
    properties: [known, portable]
  - name: t-tile
    display:
      char: 't'
      attr: eventile
    description:
      - Twenty
    properties: [known, portable]
  - name: u-tile
    display:
      char: 'u'
      attr: oddtile
    description:
      - Twenty-one
    properties: [known, portable]
  - name: v-tile
    display:
      char: 'v'
      attr: eventile
    description:
      - Twenty-two
    properties: [known, portable]
  - name: w-tile
    display:
      char: 'w'
      attr: oddtile
    description:
      - Twenty-three
    properties: [known, portable]
  - name: x-tile
    display:
      char: 'x'
      attr: eventile
    description:
      - Twenty-four
    properties: [known, portable]
  - name: y-tile
    display:
      char: 'y'
      attr: oddtile
    description:
      - Twenty-five
    properties: [known, portable]
  - name: a-tile-ordinal
    display:
      char: 'a'
    description:
      - One
    properties: [known]
  - name: b-tile-ordinal
    display:
      char: 'b'
    description:
      - Two
    properties: [known]
  - name: c-tile-ordinal
    display:
      char: 'c'
    description:
      - Three
    properties: [known]
  - name: d-tile-ordinal
    display:
      char: 'd'
    description:
      - Four
    properties: [known]
  - name: e-tile-ordinal
    display:
      char: 'e'
    description:
      - Five
    properties: [known]
  - name: f-tile-ordinal
    display:
      char: 'f'
    description:
      - Six
    properties: [known]
  - name: g-tile-ordinal
    display:
      char: 'g'
    description:
      - Seven
    properties: [known]
  - name: h-tile-ordinal
    display:
      char: 'h'
    description:
      - Eight
    properties: [known]
  - name: i-tile-ordinal
    display:
      char: 'i'
    description:
      - Nine
    properties: [known]
  - name: j-tile-ordinal
    display:
      char: 'j'
    description:
      - Ten
    properties: [known]
  - name: k-tile-ordinal
    display:
      char: 'k'
    description:
      - Eleven
    properties: [known]
  - name: l-tile-ordinal
    display:
      char: 'l'
    description:
      - Twelve
    properties: [known]
  - name: m-tile-ordinal
    display:
      char: 'm'
    description:
      - Thirteen
    properties: [known]
  - name: n-tile-ordinal
    display:
      char: 'n'
    description:
      - Fourteen
    properties: [known]
  - name: o-tile-ordinal
    display:
      char: 'o'
    description:
      - Fifteen
    properties: [known]
  - name: p-tile-ordinal
    display:
      char: 'p'
    description:
      - Sixteen
    properties: [known]
  - name: q-tile-ordinal
    display:
      char: 'q'
    description:
      - Seventeen
    properties: [known]
  - name: r-tile-ordinal
    display:
      char: 'r'
    description:
      - Eighteen
    properties: [known]
  - name: s-tile-ordinal
    display:
      char: 's'
    description:
      - Nineteen
    properties: [known]
  - name: t-tile-ordinal
    display:
      char: 't'
    description:
      - Twenty
    properties: [known]
  - name: u-tile-ordinal
    display:
      char: 'u'
    description:
      - Twenty-one
    properties: [known]
  - name: v-tile-ordinal
    display:
      char: 'v'
    description:
      - Twenty-two
    properties: [known]
  - name: w-tile-ordinal
    display:
      char: 'w'
    description:
      - Twenty-three
    properties: [known]
  - name: x-tile-ordinal
    display:
      char: 'x'
    description:
      - Twenty-four
    properties: [known]
  - name: y-tile-ordinal
    display:
      char: 'y'
    description:
      - Twenty-five
    properties: [known]
recipes:
  - in:
      - [1, ink]
      - [1, a-tile]
    out:
      - [1, sliding-tile]
    required:
      - [1, drill]
    time: 0
  - in:
      - [1, ink]
      - [1, b-tile]
    out:
      - [1, sliding-tile]
    required:
      - [1, drill]
    time: 0
  - in:
      - [1, ink]
      - [1, c-tile]
    out:
      - [1, sliding-tile]
    required:
      - [1, drill]
    time: 0
  - in:
      - [1, ink]
      - [1, d-tile]
    out:
      - [1, sliding-tile]
    required:
      - [1, drill]
    time: 0
  - in:
      - [1, ink]
      - [1, e-tile]
    out:
      - [1, sliding-tile]
    required:
      - [1, drill]
    time: 0
  - in:
      - [1, ink]
      - [1, f-tile]
    out:
      - [1, sliding-tile]
    required:
      - [1, drill]
    time: 0
  - in:
      - [1, ink]
      - [1, g-tile]
    out:
      - [1, sliding-tile]
    required:
      - [1, drill]
    time: 0
  - in:
      - [1, ink]
      - [1, h-tile]
    out:
      - [1, sliding-tile]
    required:
      - [1, drill]
    time: 0
  - in:
      - [1, ink]
      - [1, i-tile]
    out:
      - [1, sliding-tile]
    required:
      - [1, drill]
    time: 0
  - in:
      - [1, ink]
      - [1, j-tile]
    out:
      - [1, sliding-tile]
    required:
      - [1, drill]
    time: 0
  - in:
      - [1, ink]
      - [1, k-tile]
    out:
      - [1, sliding-tile]
    required:
      - [1, drill]
    time: 0
  - in:
      - [1, ink]
      - [1, l-tile]
    out:
      - [1, sliding-tile]
    required:
      - [1, drill]
    time: 0
  - in:
      - [1, ink]
      - [1, m-tile]
    out:
      - [1, sliding-tile]
    required:
      - [1, drill]
    time: 0
  - in:
      - [1, ink]
      - [1, n-tile]
    out:
      - [1, sliding-tile]
    required:
      - [1, drill]
    time: 0
  - in:
      - [1, ink]
      - [1, o-tile]
    out:
      - [1, sliding-tile]
    required:
      - [1, drill]
    time: 0
  - in:
      - [1, ink]
      - [1, p-tile]
    out:
      - [1, sliding-tile]
    required:
      - [1, drill]
    time: 0
  - in:
      - [1, ink]
      - [1, q-tile]
    out:
      - [1, sliding-tile]
    required:
      - [1, drill]
    time: 0
  - in:
      - [1, ink]
      - [1, r-tile]
    out:
      - [1, sliding-tile]
    required:
      - [1, drill]
    time: 0
  - in:
      - [1, ink]
      - [1, s-tile]
    out:
      - [1, sliding-tile]
    required:
      - [1, drill]
    time: 0
  - in:
      - [1, ink]
      - [1, t-tile]
    out:
      - [1, sliding-tile]
    required:
      - [1, drill]
    time: 0
  - in:
      - [1, ink]
      - [1, u-tile]
    out:
      - [1, sliding-tile]
    required:
      - [1, drill]
    time: 0
  - in:
      - [1, ink]
      - [1, v-tile]
    out:
      - [1, sliding-tile]
    required:
      - [1, drill]
    time: 0
  - in:
      - [1, ink]
      - [1, w-tile]
    out:
      - [1, sliding-tile]
    required:
      - [1, drill]
    time: 0
  - in:
      - [1, ink]
      - [1, x-tile]
    out:
      - [1, sliding-tile]
    required:
      - [1, drill]
    time: 0
  - in:
      - [1, ink]
      - [1, y-tile]
    out:
      - [1, sliding-tile]
    required:
      - [1, drill]
    time: 0
known: []
world:
  dsl: |
    {grass}
  upperleft: [-3, 2]
  offset: false
  palette:
    B: [grass, null, base]
    y: [grass, null, setup]
    z: [grass, null, maintainer]
    '.': [grass]
    'x': [grass]
  map: |
    ..................
    ..xxxxxx..........
    B.x....x..........
    ..x....x..........
    ..x....x..........
    ..x....x..........
    ..xxxxxx..........
    ..................
    zy................